Fibre Channel is a switched communications protocol that allows concurrent communication among servers, workstations, storage devices, peripherals, and other computing devices. Fibre Channel can be considered a channel-network hybrid, containing enough network features to provide the needed connectivity, distance, and protocol multiplexing, and enough channel features to retain simplicity, repeatable performance, and reliable delivery. Fibre Channel is capable of full-duplex transmission of frames at rates extending from 1 Gbps (gigabits per second) to 10 Gbps. It is also able to transport commands and data according to existing protocols such as Internet protocol (IP), Small Computer System Interface (SCSI), High Performance Parallel Interface (HIPPI) and Intelligent Peripheral Interface (IPI) over both optical fiber and copper cable.
FIG. 1 illustrates a variable-length Fibre Channel frame 10. The frame 10 has a 4-byte start-of-frame (SOF) indicator 12, which is a particular binary sequence indicative of the beginning of the frame 10. The SOF indicator 12 is followed by a 24-byte header 14, which specifies, among other things, the frame source address and the frame destination address. A variable-length data field 16 follows the header 14, which can range from 0 to 2112 bytes in length. The data field 16 is followed by a 4-byte cyclical redundancy check (CRC) code 18 for error detection, and by a 4 byte end-of-frame (EOF) indicator 20. Since the data payload 16 of a Fibre Channel frame can vary between 0 and 2112 bytes, the total length of a Fibre Channel frame 10 can vary from 36 to 2148 bytes.
FIG. 2 illustrates a block diagram of a representative Fibre Channel network 40. A workstation 50, a mainframe 52, and a server 54 are interconnected with a tape subsystem 60 and a disk subsystem 62 via a Fibre Channel fabric 70. The Fibre Channel fabric 70 generally takes the form of one or more Fibre Channel switches. The purpose of the fabric 70 is to interconnect the various node-ports (N_ports) 72 associated with the computers 50-54 and storage subsystems 60-62. This is accomplished by attaching the N_ports 72 to fabric-ports (F_ports) 74 associated with the fabric/switch 70. The fabric 70 receives frames of data from a source port and routes the frames to a destination port using the source and destination information found within the Fibre Channel frame header 14.
Switch fabrics 70 that support protocols such as Fibre Channel are generally frame-based and allow variable length frames to be switched from one port to another. However, there are also techniques that use fixed length cells to switch variable length frames, such as that described for example in U.S. Pat. No. 5,781,549. When using fixed length cells for data transmission, the cell size is kept relatively small. In the Ethernet switch described in the '549 patent, for example, variable length Ethernet frames are segmented into 60 bit cells for transmission through the switch. This segmentation is performed by a packet processing unit that is responsible for a group of eight Ethernet ports. Each cell contains a cell header, which contains a packet data byte count and a cell type. The packet data byte count indicates the number of valid data bytes found within the cell. The cell type indicates the type of data found within the cells. There are two cell types that indicate the cell contains actual Ethernet payload data. The first type indicates that the cell does not contain the end of the Ethernet frame. The second type indicates that the cell is the last cell in the Ethernet frame.
The cells are transmitted to Ethernet ports managed by other packet processing units over a shared cell bus. A request to transmit a cell over the cell bus is made by the packet processing unit to a central routing controller. This controller arbitrates competing requests for the shared bus, and grants access to the bus through an acknowledgement signal sent to the selected packet processing unit. Once granted access to the bus, the packet processing unit transmits its data cells over the cell bus. Other packet processing units monitor traffic on the cell bus for cells destined for one of their ports. When cells are discovered, they are reassembled back into Ethernet packets and transmitted out the appropriate Ethernet port.
The Ethernet switch in the '549 patent did not describe the use of a true cell-based switch, since the shared bus configuration meant it was not possible to simultaneously route a plurality of cells between different pairs of source and destination ports. However, true cell-based switches, such as ATM switches, use crossbars that are well known in the prior art. These switches simultaneously route multiple cells through the switch between different pairs of source and destination ports.
Because of the efficiency of these cell-based switches, several vendors have proposed the use of cell-based switches to switch data packets or frames of variable lengths. Like the '549 patent, these proposals segment the frames into fixed-size cells and then transmit the cells through the cell-based switch. Such methods typically require that the number of cells in the packet be known before the packet is sent. That number is placed in the header of every cell in the packet. The cell-based switch uses this information to break the connection through the fabric once the packet transmission has been completed.
Some framing formats indicate the frame length in their header, as is the case with IEEE 802.3 frames. When the beginning of one of these frames enters the switch, the switch can read the header, find the length of the frame in bytes, and calculate the number of cells that will transport the frame. In this case, the process of segmenting the frame into cells can begin almost immediately, with the cell header containing the proper count of cells in the packet length field. This allows the frame to be transmitted through the cell-based switch with a minimum of latency.
The use of cell-based switches to switch Fibre Channel frames 10 is more difficult, since Fibre Channel headers 14 do not contain any information identifying the length of the frame 10. This means that the length of a Fibre Channel frame 10 is not known until the CRC value 18 and the EOF marker 20 are received. It is possible to buffer an entire Fibre Channel frame 10 and count the total number of bytes in the frame. It would then be a simple matter to calculate how many cells will be necessary to accommodate all of the information in the Fibre Channel frame 10, and then place this value in the cell headers. However, waiting for the entire frame to be buffered before sending the beginning of the frame over the cell-based switch fabric introduces unacceptable latency into the transmission time of the frame (about 20 microseconds at 1 Gbps data rate versus a preferred maximum latency of two microseconds).
What is needed is a method to transmit variable length frames that do not contain length information in their frame header over a cell-based switch fabric without introducing an unacceptable level of latency.